"""
    增加进程的复用性,而不必用一个事件,开关一个进程,导致系统资源浪费.
    
    1.创建进程池对象,放入适当的进程
        from multiprocessing import Pool
        
        Pool(process)
        功能: 创建进程池对象
        参数: 指定进程数量,默认根据系统自动判定
    
    2. 将事件加入进程池队列执行
        pool.apply_async(func, args, kwds)
        功能: 使用进程池执行 func事件
        参数: func 事件函数
              args 元组传参 给func函数按位置传参
              kwds 字典 给func安装键值对传参
        返回值: 返回函数事件对象
    
    3. 关闭进程池
        pool.close()
    4. 回收进程池
        pool.join()
"""

from multiprocessing import Pool
from time import sleep, ctime

# 进程池事件
def worker(msg):
    sleep(2)
    print(ctime(), '---', msg)

# 1.创建进程池, 子进程执行的函数,一定要在Pool进程池创建之前.
pool = Pool() # 不写参数, 系统默认按照CPU核心来创建进程

# 2. 将事件加入进程池队列执行
for i in range(10):
    data = f"子进程: {i}"
    k = pool.apply_async(worker, (data,))

# 3.关闭进程池, 进程池不在接收任何事件了
pool.close()
# 4.回收进程池, 销毁进程池对象
pool.join()